{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data folder is C:\\Users\\lfranceschi\\DATASETS\n",
      "Experiment save directory is  C:\\Users\\lfranceschi\\EXPERIMENTS\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import experiment_manager as em\n",
    "import far_ho as far"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn\n",
    "%matplotlib inline\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n"
     ]
    }
   ],
   "source": [
    "far.utils.check()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "try: ss.close()\n",
    "except: pass\n",
    "tf.reset_default_graph()\n",
    "ss = tf.InteractiveSession()\n",
    "v1 = tf.Variable([1.,3])\n",
    "\n",
    "v2 = tf.Variable([[-1., -2], [1., -1.]])\n",
    "\n",
    "v01 = far.get_hyperparameter('v10', [10., 21.])\n",
    "\n",
    "lmbd = far.get_hyperparameter('lambda', \n",
    "                              initializer=tf.ones_initializer,\n",
    "                             shape=v2.get_shape())\n",
    "\n",
    "cost = tf.reduce_mean(v1**2) + tf.reduce_sum(lmbd*v2**2)\n",
    "\n",
    "io_optim = far.MomentumOptimizer(far.get_hyperparameter('eta', 0.1), \n",
    "                                   far.get_hyperparameter('mu', .9))\n",
    "\n",
    "io_optim_dict = io_optim.minimize(cost) \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(<tf.Variable 'Variable:0' shape=(2,) dtype=float32_ref>,\n",
       "  <tf.Tensor 'sub:0' shape=(2,) dtype=float32>),\n",
       " (<tf.Variable 'Variable/Momentum:0' shape=(2,) dtype=float32_ref>,\n",
       "  <tf.Tensor 'add_1:0' shape=(2,) dtype=float32>),\n",
       " (<tf.Variable 'Variable_1:0' shape=(2, 2) dtype=float32_ref>,\n",
       "  <tf.Tensor 'sub_1:0' shape=(2, 2) dtype=float32>),\n",
       " (<tf.Variable 'Variable_1/Momentum:0' shape=(2, 2) dtype=float32_ref>,\n",
       "  <tf.Tensor 'add_2:0' shape=(2, 2) dtype=float32>)]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "io_optim_dict.dynamics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "io_optim_dict.set_init_dynamics({v1: v01})  # v1 is initialized with v01"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<tf.Variable 'v10:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'lambda:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'eta:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'mu:0' shape=() dtype=float32_ref>]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "oo = tf.reduce_mean(v1**2) + tf.reduce_mean(v2**2)\n",
    "rhg = far.ReverseHg()\n",
    "rhg.compute_gradients(oo, io_optim_dict)\n",
    "\n",
    "optim_oo = tf.train.AdamOptimizer(.01)\n",
    "ts_hy = optim_oo.apply_gradients(rhg.hgrads_hvars())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<tf.Variable 'Variable:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'Variable_1:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'v10:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'lambda:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'eta:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'mu:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'Variable/Momentum:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'Variable_1/Momentum:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'beta1_power:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'beta2_power:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'v10/Adam:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'v10/Adam_1:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'lambda/Adam:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'lambda/Adam_1:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'eta/Adam:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'eta/Adam_1:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'mu/Adam:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'mu/Adam_1:0' shape=() dtype=float32_ref>]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.global_variables()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<tf.Variable 'v10:0' shape=(2,) dtype=float32_ref>,\n",
       " <tf.Variable 'lambda:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'eta:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'mu:0' shape=() dtype=float32_ref>]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "far.utils.hyperparameters()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([ 10.,  21.], dtype=float32), array([[ 1.,  1.],\n",
       "        [ 1.,  1.]], dtype=float32), 0.1, 0.89999998]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.global_variables_initializer().run()\n",
    "ss.run(far.utils.hyperparameters())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([ 1.,  3.], dtype=float32), array([[-1., -2.],\n",
       "        [ 1., -1.]], dtype=float32), array([ 10.,  21.], dtype=float32), array([[ 1.,  1.],\n",
       "        [ 1.,  1.]], dtype=float32), 0.1, 0.89999998, array([ 0.,  0.], dtype=float32), array([[ 0.,  0.],\n",
       "        [ 0.,  0.]], dtype=float32), 0.89999998, 0.99900001, array([ 0.,  0.], dtype=float32), array([ 0.,  0.], dtype=float32), array([[ 0.,  0.],\n",
       "        [ 0.,  0.]], dtype=float32), array([[ 0.,  0.],\n",
       "        [ 0.,  0.]], dtype=float32), 0.0, 0.0, 0.0, 0.0]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ss.run(tf.global_variables())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def print_history():\n",
    "    for h in rhg._history:\n",
    "        print(h)\n",
    "        print('='*20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "rhg.run(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[array([ 10.,  21.], dtype=float32), array([ 0.,  0.], dtype=float32), array([[-1., -2.],\n",
      "       [ 1., -1.]], dtype=float32), array([[ 0.,  0.],\n",
      "       [ 0.,  0.]], dtype=float32)]\n",
      "====================\n",
      "[array([  9.        ,  18.89999962], dtype=float32), array([ 10.,  21.], dtype=float32), array([[-0.80000001, -1.60000002],\n",
      "       [ 0.80000001, -0.80000001]], dtype=float32), array([[-2., -4.],\n",
      "       [ 2., -2.]], dtype=float32)]\n",
      "====================\n",
      "[array([  7.19999981,  15.11999989], dtype=float32), array([ 18.        ,  37.79999924], dtype=float32), array([[-0.46000001, -0.92000002],\n",
      "       [ 0.46000001, -0.46000001]], dtype=float32), array([[-3.4000001 , -6.80000019],\n",
      "       [ 3.4000001 , -3.4000001 ]], dtype=float32)]\n",
      "====================\n",
      "[array([  4.85999966,  10.20600033], dtype=float32), array([ 23.39999771,  49.13999557], dtype=float32), array([[-0.06200001, -0.12400001],\n",
      "       [ 0.06200001, -0.06200001]], dtype=float32), array([[-3.98000002, -7.96000004],\n",
      "       [ 3.98000002, -3.98000002]], dtype=float32)]\n",
      "====================\n",
      "[array([ 2.26799989,  4.76280069], dtype=float32), array([ 25.91999817,  54.43199539], dtype=float32), array([[ 0.30860001,  0.61720002],\n",
      "       [-0.30860001,  0.30860001]], dtype=float32), array([[-3.70600009, -7.41200018],\n",
      "       [ 3.70600009, -3.70600009]], dtype=float32)]\n",
      "====================\n",
      "[array([-0.29159975, -0.61235905], dtype=float32), array([ 25.59599686,  53.75159836], dtype=float32), array([[ 0.58042002,  1.16084003],\n",
      "       [-0.58042002,  0.58042002]], dtype=float32), array([[-2.71820021, -5.43640041],\n",
      "       [ 2.71820021, -2.71820021]], dtype=float32)]\n",
      "====================\n"
     ]
    }
   ],
   "source": [
    "print_history()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "rhg.run(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[array([ 10.,  21.], dtype=float32), array([ 0.,  0.], dtype=float32), array([[-1., -2.],\n",
      "       [ 1., -1.]], dtype=float32), array([[ 0.,  0.],\n",
      "       [ 0.,  0.]], dtype=float32)]\n",
      "====================\n",
      "[array([  9.        ,  18.89999962], dtype=float32), array([ 10.,  21.], dtype=float32), array([[-0.80000001, -1.60000002],\n",
      "       [ 0.80000001, -0.80000001]], dtype=float32), array([[-2., -4.],\n",
      "       [ 2., -2.]], dtype=float32)]\n",
      "====================\n",
      "[array([  7.19999981,  15.11999989], dtype=float32), array([ 18.        ,  37.79999924], dtype=float32), array([[-0.46000001, -0.92000002],\n",
      "       [ 0.46000001, -0.46000001]], dtype=float32), array([[-3.4000001 , -6.80000019],\n",
      "       [ 3.4000001 , -3.4000001 ]], dtype=float32)]\n",
      "====================\n",
      "[array([  4.85999966,  10.20600033], dtype=float32), array([ 23.39999771,  49.13999557], dtype=float32), array([[-0.06200001, -0.12400001],\n",
      "       [ 0.06200001, -0.06200001]], dtype=float32), array([[-3.98000002, -7.96000004],\n",
      "       [ 3.98000002, -3.98000002]], dtype=float32)]\n",
      "====================\n",
      "[array([ 2.26799989,  4.76280069], dtype=float32), array([ 25.91999817,  54.43199539], dtype=float32), array([[ 0.30860001,  0.61720002],\n",
      "       [-0.30860001,  0.30860001]], dtype=float32), array([[-3.70600009, -7.41200018],\n",
      "       [ 3.70600009, -3.70600009]], dtype=float32)]\n",
      "====================\n",
      "[array([-0.29159975, -0.61235905], dtype=float32), array([ 25.59599686,  53.75159836], dtype=float32), array([[ 0.58042002,  1.16084003],\n",
      "       [-0.58042002,  0.58042002]], dtype=float32), array([[-2.71820021, -5.43640041],\n",
      "       [ 2.71820021, -2.71820021]], dtype=float32)]\n",
      "====================\n"
     ]
    }
   ],
   "source": [
    "print_history()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([ 0.00850303,  0.01785634], dtype=float32),\n",
       " array([[ 0.20626384,  0.82505536],\n",
       "        [ 0.20626384,  0.20626384]], dtype=float32),\n",
       " 135.57565,\n",
       " 25.722061]"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ss.run(far.utils.hypergradients())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([ 0.00850303,  0.01785634], dtype=float32),\n",
       " array([ 0.06717408,  0.14106545], dtype=float32),\n",
       " array([[-0.16844368, -0.33688736],\n",
       "        [ 0.16844368, -0.16844368]], dtype=float32),\n",
       " array([[-0.03549819, -0.07099639],\n",
       "        [ 0.03549819, -0.03549819]], dtype=float32)]"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ss.run(far.utils.lagrangian_multipliers())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 307,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# ss.run(ts_hy)  # perform an hypergradient descent step....\n",
    "# print(ss.run(far.utils.hyperparameters()))\n",
    "# print(ss.run(oo))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<tf.Tensor 'add_3_1/gradients_3/add_3_1/Vectorization_2/Reshape_grad/Reshape:0' shape=(2,) dtype=float32>,\n",
       " <tf.Variable 'add_3/lambda/hypergradient:0' shape=(2, 2) dtype=float32_ref>,\n",
       " <tf.Variable 'add_3/eta/hypergradient:0' shape=() dtype=float32_ref>,\n",
       " <tf.Variable 'add_3/mu/hypergradient:0' shape=() dtype=float32_ref>]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.get_collection(far.GraphKeys.HYPERGRADIENTS)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## check with some other initialization hyperparameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 307,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "try: ss.close()\n",
    "except: pass\n",
    "tf.reset_default_graph()\n",
    "ss = tf.InteractiveSession()\n",
    "v1 = tf.Variable([1.,3])\n",
    "\n",
    "v2 = tf.Variable([[-1., -2], [10., -1.]])\n",
    "\n",
    "std_dev = far.get_hyperparameter('stddev', 1.)\n",
    "# mean = far.get_hyperparameter('mean', 1.)\n",
    "mean = 0.\n",
    "v01 = tf.random_normal(shape=v1.get_shape(), mean=mean, stddev=std_dev)\n",
    "\n",
    "lmbd = far.get_hyperparameter('lambda', \n",
    "                              initializer=tf.ones_initializer,\n",
    "                             shape=v2.get_shape())\n",
    "\n",
    "cost = tf.reduce_mean(v1**2) + tf.reduce_sum(lmbd*v2**2)\n",
    "\n",
    "io_optim = far.MomentumOptimizer(far.get_hyperparameter('eta', 0.1), \n",
    "                                   far.get_hyperparameter('mu', .9))\n",
    "oo = tf.reduce_mean(v1**4) # + tf.reduce_mean(v2**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 308,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "farho = far.HyperOptimizer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 309,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method HyperOptimizer.run of <far_ho.hyperparameters.HyperOptimizer object at 0x000000001C8AD320>>"
      ]
     },
     "execution_count": 309,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "farho.minimize(oo, tf.train.AdamOptimizer(0.001), cost, io_optim, init_dynamics_dict={v1: v01},\n",
    "               hyper_list=[std_dev])  # ok this is quite right.... \n",
    "# forgot to set init_dynamics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 310,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "tf.global_variables_initializer().run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 311,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.2543641]\n",
      "[1.001, array([[ 1.,  1.],\n",
      "       [ 1.,  1.]], dtype=float32), 0.1, 0.89999998]\n",
      "0.0713477\n"
     ]
    }
   ],
   "source": [
    "farho.run(10)\n",
    "print(ss.run(far.utils.hypergradients()))\n",
    "print(ss.run(far.utils.hyperparameters()))\n",
    "print(ss.run(oo))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 312,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def _rr():\n",
    "    farho.run(5)\n",
    "    return ss.run(oo)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 313,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "res  = [_rr() for _ in range(1000)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 314,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1cedeeb8>]"
      ]
     },
     "execution_count": 314,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1cd7bc18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 315,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# ookk looks like its oalll right "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 316,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0060654"
      ]
     },
     "execution_count": 316,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "std_dev.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'float' object has no attribute 'eval'",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-306-d0c7b6765d65>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmean\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0meval\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m: 'float' object has no attribute 'eval'"
     ],
     "output_type": "error"
    }
   ],
   "source": [
    "mean.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
